﻿using System;
using System.Windows;
using System.Windows.Input;
using InnvoiceActual.Logica.GestorDB;
using InnvoiceActual.Logica.GestorObject.Articulo;
using System.Windows.Documents;
using System.Collections.Generic;
using System.ComponentModel;
using InnvoiceActual.Logica.GestorObject;

namespace InnvoiceActual.Ws.Articulos.Articulos
{
    /// <summary>
    /// Lógica de interacción para AltaArticulo.xaml
    /// </summary>
    public partial class AltaArticulo : Window
    {
        #region Property

        private Articulo nuevoArticulo = new Articulo();
        ArticuloDB articuloDb = new ArticuloDB();
        EmpresaCS empresa = EmpresaCS.Instance;

        #endregion

        #region Contructor

        public AltaArticulo()
        {
            InitializeComponent();
            DataContext = nuevoArticulo;
            nuevoArticulo.PropertyChanged += new PropertyChangedEventHandler(nuevoArticulo_PropertyChanged);
            TextDescripcion.Focus();
        }

        #endregion

        #region Windows Methods

        private void btn_Cancelar_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void btn_Guardar_Click(object sender, RoutedEventArgs e)
        {
            GuardarArticulo();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            List<CategoriaArticulo> categorias = new List<CategoriaArticulo>();
            categorias = articuloDb.ObtenerCategoriasDeArticulosSegunEstado(1);

            categoriaComboBox.Items.Clear();
            categoriaComboBox.ItemsSource = categorias;
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.Key.ToString().ToUpper())
            {
                case "F1":
                    GuardarArticulo();
                    break;
                case "ESCAPE":
                    this.Close();
                    break;
                default:
                    return;

            }
        }

        private void nuevoArticulo_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            btnGuardar.IsEnabled = nuevoArticulo.IsValid();
        }

        #endregion

        #region Auxiliar Methods

        private void GuardarArticulo()
        {
            nuevoArticulo.CodigoCategoriaArticulo = Convert.ToInt16(categoriaComboBox.SelectedValue);

            articuloDb.AddArticulo(nuevoArticulo);
            this.Close();
        }

        #endregion
    }
}
